<?php
if (! defined('IN_SITE')) {
	exit('invalid request');
}

/**
 * 日志记录器（Categorized Logger）
 */
class CLogger {

	/**
	 * 向指定的类目中记录信息。
	 *
	 * @param string $category
	 *        	类别。应符合文件系统的文件命名规则。
	 * @param string $message
	 *        	文字信息。
	 */
	public static function log($category, $message)
	{
		$filename = self::calcFilename($category);
		if (empty($filename)) return;

		// 插入标志信息
		$timestamp = date('Y-m-d H:i:s');
		$message = "[{$timestamp}]\r\n{$message}\r\n\r\n";

		// 写入文件内容
		file_put_contents($filename, $message, FILE_APPEND);
	}

	public static function clear($category)
	{
		$filename = self::calcFilename($category);
		if (empty($filename)) return;
		file_put_contents($filename, '');
	}

	private static function calcFilename($category)
	{
		// 找到日志文件夹
		$log_path = $GLOBALS['config']['log_path'];
		if (empty($log_path)) {
			return null;
		}

		// 确认文件夹存在并可写
		if (! file_exists($log_path)) {
			mkdir($log_path, 0774, true);
		}
		if (! is_dir($log_path) || ! is_writable($log_path)) {
			return null;
		}

		// 计算出日志文件的全路径
		$filename = "{$log_path}{$category}.log";
		return $filename;
	}
}
